# !/usr/bin/env python
# _*_ coding:UTF-8 _*_
"""
@project:comen_apitest_aims
@auther:sujinfa
@file:get_cryptography.py
@date:2024/3/12 14:11
登录接口，账号、密码加密处理
"""
import base64


from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
from cryptography.hazmat.backends import default_backend



def aes_cryptography(data):
    """
    备注：key、isv是每个项目后端配置有一个默认值，一般使用默认。
    key:1234567812345678
    isv:0000000000000000
    data：加密的数据
    """

    # 生成密钥和初始向量(IV)
    key = b'1234567812345678'  # AES-128, 128 bits key
    iv = b'0000000000000000'  # AES block size is 16 bytes

    # 创建填充器
    padder = padding.PKCS7(128).padder()

    # 要加密的数据
    #data = b"@AdminOR"

    # 添加填充
    padded_data = padder.update(data) + padder.finalize()

    # 创建CBC模式的加密器
    cipher = Cipher(algorithms.AES(key), modes.CBC(iv), backend=default_backend())
    encryptor = cipher.encryptor()

    # 加密数据
    ciphertext = encryptor.update(padded_data) + encryptor.finalize()

    #ciphertext.hex() 是一个将字节对象 (bytes) 转换为其十六进制表示的方法
    base64str = ciphertext.hex()
    # print(base64str)
    return base64str

def base64str(str1):
    """
    十六进制字符串转换为Base64字符串
    :param str:
    :return:
    """
    # 将十六进制字符串转换为字节串
    byte_string = bytearray.fromhex(str1)

    # 将字节串编码为Base64字符串
    base64_string = base64.b64encode(byte_string).decode('utf-8')
    # print(base64_string)
    return base64_string


if __name__ == '__main__':
    a= aes_cryptography(b'@AdminOR')
    base64str(a)